package com.qf.fmall.utils;

import cn.hutool.jwt.JWT;

import java.util.Date;

public class TokenUtils {

    public static final String JWT_SECRET = "qfsy2305";
    public static final String JWT_ISSUER = "FMALL";

    /**
     * 用来生成token的方法
     *
     * @param username token是颁发给哪个用户的
     * @param time     token的有效期, 单位为 分钟
     * @return 返回token
     */
    public static String createToken(String username, Integer time) {

        // 创建 hutool提供 的jwt对象
        JWT jwt = JWT.create();
        // 设置重要信息到jwt对象中
        // 1. 服务器自己私有的用来计算jwt前面的秘钥
        jwt.setKey(JWT_SECRET.getBytes());
        // 2. 设置TOKEN颁发给哪个用户
        jwt.setSubject(username);
        // 3. 设置TOKEN室友哪个机构颁发的
        jwt.setIssuer(JWT_ISSUER);
        // 4. 设置TOKEN的颁发时间
        jwt.setIssuedAt(new Date());
        // 5. 设置TOKEN的过期时间
        jwt.setExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * time));

        // 利用jwt对象创建TOKEN字符串
        String token = jwt.sign();

        return token;
    }

    public boolean checkToken(String token) {

        // 1. 根据TOKEN字符串创建一个jwt对象
        JWT jwt = JWT.of(token);

        // 2. 设置用来校验TOKEN的秘钥
        jwt.setKey(JWT_SECRET.getBytes());

        // 3. 校验token
        boolean validate = jwt.validate(0);

        return validate;

    }


}
